package com.langchain4j.core.llm.provider;

import com.langchain4j.core.llm.model.GenerationConfig;
import com.langchain4j.core.llm.model.GenerationResult;
import com.langchain4j.core.llm.model.EmbeddingResult;
import com.langchain4j.core.llm.model.ModelInfo;

import java.util.concurrent.CompletableFuture;

/**
 * LLM提供者接口
 * 统一抽象不同LLM模型的调用接口
 */
public interface LLMProvider {
    
    /**
     * 生成文本
     * @param prompt 输入提示
     * @param config 生成配置
     * @return 生成结果
     */
    CompletableFuture<GenerationResult> generate(String prompt, GenerationConfig config);
    
    /**
     * 生成文本（使用默认配置）
     * @param prompt 输入提示
     * @return 生成结果
     */
    default CompletableFuture<GenerationResult> generate(String prompt) {
        return generate(prompt, GenerationConfig.defaultConfig());
    }
    
    /**
     * 生成嵌入向量
     * @param text 输入文本
     * @return 嵌入结果
     */
    CompletableFuture<EmbeddingResult> embed(String text);
    
    /**
     * 获取模型信息
     * @return 模型信息
     */
    ModelInfo getModelInfo();
    
    /**
     * 检查模型是否可用
     * @return 是否可用
     */
    CompletableFuture<Boolean> isAvailable();
    
    /**
     * 获取提供者类型
     * @return 提供者类型
     */
    String getProviderType();
} 